package klab;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;

import javax.swing.JCheckBox;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.border.TitledBorder;

public class KLForma extends JFrame {
	static{
		KLForma.setDefaultLookAndFeelDecorated(true);
		JDialog.setDefaultLookAndFeelDecorated(true);
	}
	private static final String VERZIJA = "1.3.2";
	private static final String GODINA = "2011";
	private static final String EMAIL = "sasa.milenkovic@megatrend.edu.rs";
	private static final long serialVersionUID = 7789634162853603428L;
	private ReadEnv re = ReadEnv.getInstance();
	SysOperacije sysOp = SysOperacije.getInstance();
	Zadaci source = new Zadaci(" sa zadacima "), 
	       destination = new Zadaci(" za rešenja "),
	       target = new Zadaci(" na klijentima (\\\\<računarXY>\\" + re.getMainHomePath(true) + "\\...) ");
	Racunari klijenti;
	Manipulacija manipulacija = Manipulacija.getInstance();
	Sistem sistem = Sistem.getInstance();
	JPanel direktorijumi = new JPanel(),
		   desktopDir = new JPanel();
	JTextField desktopPath = new JTextField();
	JLabel desktopLabel = new JLabel(" Folder na desktopu: ");
	JCheckBox cb;
	private static KLForma instance = null;
	private KLForma () {
		super();
		int preskoceni [] = sysOp.getPreskoceni();
		int min = sysOp.PRVI_BROJ_RACUNARA /10;
		int max = sysOp.POSLEDNJI_BROJ_RACUNARA / 10;
		boolean ponovljen=false;
		for (int i=min; i <= max; i++){
			int oznaka;
			for (int j=1; j < 11; j++ ){
				if (ponovljen) {// Preskakanje i sledeceg, nakon jednog preskakanja
					ponovljen=false;
					continue;
				}
				for (int p:preskoceni)
					if (i*10+j==p) {
						ponovljen=true; // Ako se neki broj ne koristi, onda se preskace on i sledeci (zbog dve grupe zadataka)
						break;
					}
				
				if (ponovljen) continue; // skok u naredni ciklus
				else cb = new JCheckBox();
				oznaka = i*10+j;
				if (oznaka<=sysOp.POSLEDNJI_BROJ_RACUNARA){
					// TODO: ovde citati iz config fajla da li je neki racunar chekiran ili nije
					cb.setText(sysOp.PREFIKS_NAZIVA+oznaka);
					cb.setPreferredSize(new Dimension(55,18));
					sysOp.racunari.add(cb);
				}
			}
		}
		init();
	}
	public static KLForma getInstance(){
		if (null == instance)
			instance = new KLForma();
		return instance;
	}
	
	private void init(){
		
		source.neparniPath.setText(sysOp.ZADSRCN);	
		source.parniPath.setText(sysOp.ZADSRCP);		
		destination.neparniPath.setText(sysOp.REZDESTN);		
		destination.parniPath.setText(sysOp.REZDESTP);		
		target.neparniPath.setText(sysOp.KLIJERNTN);
		target.parniPath.setText(sysOp.KLIJERNTP);
		
		desktopPath.setPreferredSize(new Dimension(355,20));
		desktopPath.setBackground(source.parniPath.getBackground());
		desktopDir.setLayout(new BorderLayout());
		
		if (! SysOperacije.getInstance().PORUKA_ZA_GASENJE.toLowerCase().startsWith("test"))
			target.isto.setSelected(true);		
		
		klijenti = new Racunari();
		direktorijumi.setLayout(new BorderLayout());
		direktorijumi.setBorder(new TitledBorder(" direktorijumi "));
		direktorijumi.add(source,BorderLayout.NORTH);
		direktorijumi.add(destination,BorderLayout.CENTER);
		direktorijumi.add(target,BorderLayout.SOUTH);
		
		sysOp.poruke.setMinimumSize(new Dimension (direktorijumi.getPreferredSize().width+manipulacija.getPreferredSize().width,50));
		sysOp.poruke.setEditable(false);
		sysOp.poruke.setAutoscrolls(true);
		sysOp.poruke.setFocusable(false);
		sysOp.poruke.setText("\n                                 Dozvoljeno neograničeno korišćenje " +
							 "isključivo u prostorijama Megatrend Univerziteta");
		sysOp.poruke.append("\n                  K-Lab v"+VERZIJA+
							", Copyright © Saša Milenković "+GODINA+
							", all rights reserved, "+EMAIL);

		JScrollPane scroll = new JScrollPane(sysOp.poruke);
		scroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
		scroll.setPreferredSize(new Dimension (direktorijumi.getPreferredSize().width+manipulacija.getPreferredSize().width,80));
		getContentPane().setLayout(new FlowLayout());
		getContentPane().add(klijenti);
		getContentPane().add(direktorijumi);
		getContentPane().add(manipulacija);
		getContentPane().add(sistem);
		getContentPane().add(scroll);
		sysOp.setDugmadEnabled(false); // ako nisu chekirani batch i start

		pack();
		if (direktorijumi.getPreferredSize().width+manipulacija.getPreferredSize().width >= klijenti.getPreferredSize().width){
			setSize(new Dimension (direktorijumi.getPreferredSize().width+manipulacija.getPreferredSize().width+40,
					klijenti.getPreferredSize().height+direktorijumi.getPreferredSize().height+sistem.getPreferredSize().height+
					scroll.getPreferredSize().height+60));
		} else{
			setSize(new Dimension (klijenti.getPreferredSize().width+40,scroll.getPreferredSize().height+60+
					klijenti.getPreferredSize().height+direktorijumi.getPreferredSize().height+sistem.getPreferredSize().height));			
		}
		this.setLocationByPlatform(true);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);		
	}
	
	public static void main(String[] args) {
		SysOperacije.getInstance().ucitajConfig();
		KLForma kLab2 = getInstance();
		
		kLab2.setTitle("K-Lab - batch manipulator");
		kLab2.setResizable(false);
		kLab2.setVisible(true);
		}
}
